#include <iostream>
#include <sys/timerfd.h>
#include <unistd.h>


int main()
{
    //创建一个定时器
    int timefd=timerfd_create(CLOCK_MONOTONIC,0);
    if(timefd<0){
        
    }
    struct itimerspec itm;
    
    itm.it_value.tv_sec=3; //设置第⼀次超时的时间
    itm.it_value.tv_nsec=0;

    itm.it_interval.tv_sec=1;//第⼀次超时后，每隔多⻓时间超时
    itm.it_interval.tv_nsec=0;

    timerfd_settime(timefd,0,&itm,nullptr);
    /*这个定时器描述符将每隔三秒都会触发⼀次可读事件*/
    while(1)
    {  
        uint64_t tmp;
        /*需要注意的是定时器超时后,则描述符触发可读事件，必须读取8字节的数据*/
        int ret=read(timefd,&tmp,sizeof(tmp));
        if(ret<0)
        {
            return -1;;
        }
        std::cout<<tmp<<std::endl;
        sleep(2);
    }
    return 0;
}